#ifndef __SEQUENCE_RUNNER_H
#define __SEQUENCE_RUNNER_H

#include <QList>
#include "sequenceitem.h"

class SequenceRunner;
class MockTimerService;
class QAbstractListModel;
class SequenceModel;


class test_SequenceRunner : public QObject
{
   Q_OBJECT

   /** helper struct to record events */
   typedef struct
   {
      SequenceItem::eventType eventType;
      QString eventName;
   } eventEntry;

public:
   test_SequenceRunner();

private:
   QList<SequenceItem *> m_list;
   SequenceModel *m_model;
   SequenceRunner *m_runner;
   MockTimerService *m_timerService;

public slots:
    void init();
    void cleanup();

private Q_SLOTS:
   void testCreation();
   void testPlay();
   void testAnimation();
   void testDelayManual();
   void testPause();
   void testPauseThenPlay();
   void testObjectsScope();
   void testValidJump();
   void testSelectItem();
   void testSignalForActiveChange();
   void testSignalTimerChange();
   void testSelectAfterActivation();
   void testPlayPauseSignals();
   void testSequenceOver();
   void testEmptySequence();
   void testPlayUninitializedEntry();

   /* helpers */
private:
   void itemsInAnotherScope();

};

#endif  // __SEQUENCE_RUNNER_H
